﻿#pragma once
#ifndef WRWORKDRIVERACTIVATOR_H
#define WRWORKDRIVERACTIVATOR_H

#include "../WRGlobal.h"
#include "../../WRSoft-Utility/Runtime/WRClassActivator.h"
#include <QDomElement>

//工作驱动激活器类型标识 {0D547631-CE0A-454D-89E2-81B818750A32}
#define WRWorkDriverActivatorType QUuid(0xd547631, 0xce0a, 0x454d, 0x89, 0xe2, 0x81, 0xb8, 0x18, 0x75, 0xa, 0x32)

namespace WRTypes
{
    //获取工作驱动激活器类型。
    WRSOFT_WORKING_COMMON_API WRType* workDriverActivator(void);
}

//声明工作驱动类。
class WRWorkDriver;
//声明工作程序类。
class WRWorkDaemon;

//表示工作驱动创建器。
class WRSOFT_WORKING_COMMON_CLASS WRWorkDriverActivator : public WRClassActivator
{
private:
    //禁用复制构造函数和赋值操作符。
    Q_DISABLE_COPY(WRWorkDriverActivator)

protected:
    //初始化工作驱动创建器。
    inline WRWorkDriverActivator(void)
    {
        //add code here
    }
    //释放当前对象所占用的相关资源。
    ~WRWorkDriverActivator(void)
    {
        //add code here
    }

public:
    //获取当前对象类型。
    WRType* type(void) const;
    //创建工作驱动实例。
    virtual WRWorkDriver* create(WRWorkDaemon* daemon, const QDomElement& config) = 0;
};


#endif // WRWORKDRIVERACTIVATOR_H
